#include "MainWidget.h"
#include "TableViewWithLoader.h"
#include <QVBoxLayout>
#include <QHeaderView>

/**
 * @brief 构造函数
 * @param parent 父窗口
 */
MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
    // 创建模型和视图
    m_model = new BigDataModel(100000, 5, this);
    m_tableView = new TableViewWithLoader(this);

    // 设置模型
    m_tableView->setModel(m_model);

    // 创建和设置代理
    m_progressDelegate = new ProgressBarDelegate(this);
    m_starDelegate = new StarRatingDelegate(this);

    // 为特定列设置代理
    m_tableView->setItemDelegateForColumn(2, m_progressDelegate);
    m_tableView->setItemDelegateForColumn(3, m_starDelegate);

    // 连接信号槽
    connect(m_tableView, &TableViewWithLoader::visibleRangeChanged,
            m_model, &BigDataModel::setVisibleRange);

    // 设置视图属性
    m_tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    m_tableView->setSortingEnabled(true);
    m_tableView->setAlternatingRowColors(true);
    m_tableView->setShowGrid(false);
    m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);

    // 创建布局
    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->addWidget(m_tableView);
    setLayout(layout);

    // 设置窗口属性
    resize(1000, 600);
    setWindowTitle("大数据表格视图示例");
}

/**
 * @brief 析构函数
 */
MainWidget::~MainWidget()
{
}
